package File_Study;

import java.io.File;

public class FileDemo6 {
    /*
        需求:文件搜索,从磁盘中,搜索出某个文件名称,并输出绝对路径.
        分析:
            1.先定位出的应该是一级文件
            2.遍历全部一级文件对象,判断是否是文件
            3.如果是文件,判断是否是自己想要的
            4.如果是文件夹,需要继续递归进去重复上述过程
     */
    public static void main(String[] args) {
        // 传入目录和文件名称
        searchFile(new File("E:/"),"Typora.exe");
//        System.out.println("null".equals(new File("E:/").getName()));
    }

    public static void searchFile(File dir, String fileName) {
        // 判断dir是否是目录
        if (dir != null && dir.isDirectory()){
            // 提取当前目录下的一级目录
            File[] files = dir.listFiles();
            // 判断是否存在以及对象,存在才可以遍历
            if (files != null && files.length > 0){
                for (File f : files) {
                    // 判断当前遍历的是一级文件对象是文件 还是 目录
                    if (f.isFile()){
                        // 判断是否是要查找的文件
                        // 使用contains进行模糊查找
                        if (f.getName().contains(fileName)){
                            System.out.println("找到了" + f.getAbsolutePath());
                            // 启动它
//                            Runtime r = Runtime.getRuntime();
//                            try {
//                                r.exec(f.getAbsolutePath());
//                            } catch (IOException e) {
//                                throw new RuntimeException(e);
//                            }
                        }
                    } else {
                        // 是文件夹 需要递归继续寻找
                        searchFile(f,fileName);
                    }
                }
            }
        } else {
            System.out.println("对不起,当前搜索的不是文件夹");
        }

    }
}
